#include <iostream>
#include <string>
#include <deque>
#include <algorithm>
using namespace std;

// int main()
// {
//     srand(time(nullptr));
//     deque<int> de1;
//     deque<int> de2(1);
//     de1 = de2;
//     deque<int> de3(de2);
//     de1.push_back(1);
//     for(int i = 0; i < 10; i++)
//     {
//         cout << " push_back" << endl;
//         de1.push_back(i);
//         cout << de1[i] << endl;
//         cout << de1.back() << endl;

//     }
//     for(int i = de1.size(); i >= 3; i--)
//     {    
//         cout << " pop_back" << endl;

//         cout << de1[i] << endl;
//         de1.pop_back();
//     }
//     cout << "size:" << de1.size() << endl;
//     while(de1.end() != de1.begin())
//     {
//         cout << " iterator" << endl;
//         cout << *de1.begin() << endl;
//         de1.erase(de1.begin());
//     }
//     de1.resize(10000000);
//     for(int i = 0; i < 10000000; i++)
//     {
//         de1[i] = rand() % 1000 + 1;
//         de1[i] = rand();
//     }
//     sort(de1.begin(), de1.end());
//     for(int i = 0; i < 100; i++)
//         cout << de1[i] << endl;
//     return 0;
// }

// is_permutation example
// #include <iostream>     // std::cout
// #include <algorithm>    // std::is_permutation
// #include <array>        // std::array

// int main () {
//   std::array<int,5> foo = {1,2,3,4,5};
//   std::array<int,5> bar = {3,1,4,5,2};

//   if ( std::is_permutation (foo.begin(), foo.end(), bar.begin()) )
//     std::cout << "foo and bar contain the same elements.\n";

//     for(int i = 0; i < foo.size(); i++)
//     {
//        cout << foo[i] << endl;
//        cout << bar[i] << endl;

//     }
//     // 破解版
//     // 
//   return 0;
// }


 
#include <iostream>
#include <vector>
#include <algorithm>
// #include <boost/assign.hpp>
// #include <boost/function.hpp>
 
using namespace std;
// using namespace boost;
// using namespace boost::assign;
 
inline void print_(int t){cout<<t<<" ";}
inline void print(vector<int>& vec)
{
    for_each(vec.begin(),vec.end(),print_);
    cout<<endl;
}
 
//! 全排列测试
void test1()
{
    vector<int> vec({1,2,3,4});
    // vec += 1,2,3,4,5,6,7,8;
    sort(vec.begin(),vec.end());
    int i = 0;
    do
    {
       print(vec);
       i++;
    }
    while(next_permutation(vec.begin(),vec.end()));
    std::cout<<i<<std::endl;//40320
}
 
//! 组合测试
// size_t test2(int n,int m,boost::function<void(std::vector<int>&)> fn)
// {
//     vector<int> p,set;
//     p.insert(p.end(),m,1);
//     p.insert(p.end(),n-m,0);
//     for(int i = 0;i != p.size();++i)
//         set.push_back(i+1);
//     vector<int> vec;
//     size_t cnt = 0;
//     do{
//         for(int i = 0;i != p.size();++i)
//             if(p[i])
//                vec.push_back(set[i]);
//         fn(vec);
//         cnt ++;
//         vec.clear();
//     }while(prev_permutation( p.begin(), p.end()));
//     return cnt;
// }
 
// int main()
// {
// //    test1();
//     std::cout<<test2(20,3,print)<<std::endl;
//     return 0;
// }

#include <iostream>  
#include <chrono>
#include <algorithm>  
#include <sstream>
using namespace std;  
int main()  
{  
    int num[26]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26};  
    // 获取当前时间
    time_t now = time(NULL);
	  tm* tm_t = localtime(&now);
	  stringstream ss;
	  ss << "year:" << tm_t->tm_year + 1900 << " month:" << tm_t->tm_mon + 1 << " day:" << tm_t->tm_mday
		  << " hour:" << tm_t->tm_hour << " minute:" << tm_t->tm_min << " second:" << tm_t->tm_sec;

    std::cout << ss.str() << endl;
    // cout << "开始" << endl;
    // do  
    // {  
    //     // for(int i = 0; i < 26; i++)
    //     // {
    //     //     cout << num[i] <<" ";
    //     // }
    //     // cout << endl;
    // }while(next_permutation(num,num+26));

    now = time(NULL);
    tm_t = localtime(&now);
    ss << "year:" << tm_t->tm_year + 1900 << " month:" << tm_t->tm_mon + 1 << " day:" << tm_t->tm_mday
		  << " hour:" << tm_t->tm_hour << " minute:" << tm_t->tm_min << " second:" << tm_t->tm_sec;
 
    std::cout << ss.str() << endl;  
    cout << "结束" << endl;
    return 0;  
}  